<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<title>OpenCV: cv::dnn::BackendWrapper Class Reference</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../tutorial-utils.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
   &#160;<span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="../../d2/d75/namespacecv.html">cv</a></li><li class="navelem"><a class="el" href="../../df/d57/namespacecv_1_1dnn.html">dnn</a></li><li class="navelem"><a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html">BackendWrapper</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../d7/d37/classcv_1_1dnn_1_1BackendWrapper-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">cv::dnn::BackendWrapper Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="../../d6/d0f/group__dnn.html">Deep Neural Network module</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Derivatives of this class wraps <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a> for different backends and targets.  
 <a href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#details">More...</a></p>

<p><code>#include &lt;opencv2/dnn/dnn.hpp&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a523b1266b28c68bf80153fe1cce064fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#a523b1266b28c68bf80153fe1cce064fc">BackendWrapper</a> (int <a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#a93c4757ba0f720e8133d2f14ee8425f5">backendId</a>, int <a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#af874ec283d3710ba56945a063fddd197">targetId</a>)</td></tr>
<tr class="separator:a523b1266b28c68bf80153fe1cce064fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f78e2ddc8f0aeadfc1ae173cc279e3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#a4f78e2ddc8f0aeadfc1ae173cc279e3e">BackendWrapper</a> (int <a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#af874ec283d3710ba56945a063fddd197">targetId</a>, const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">cv::Mat</a> &amp;m)</td></tr>
<tr class="memdesc:a4f78e2ddc8f0aeadfc1ae173cc279e3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrap <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a> for specific backend and target.  <a href="#a4f78e2ddc8f0aeadfc1ae173cc279e3e">More...</a><br /></td></tr>
<tr class="separator:a4f78e2ddc8f0aeadfc1ae173cc279e3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba12624858d3e17d6702d0e4061d9e65"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#aba12624858d3e17d6702d0e4061d9e65">BackendWrapper</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html">BackendWrapper</a> &gt; &amp;base, const <a class="el" href="../../d6/d0f/group__dnn.html#ga8a9ab61770c140f0fa2880c90aeae832">MatShape</a> &amp;<a class="el" href="../../df/d57/namespacecv_1_1dnn.html#a270ae5dc357c85f7fec6d94470b52189">shape</a>)</td></tr>
<tr class="memdesc:aba12624858d3e17d6702d0e4061d9e65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make wrapper for reused <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a>.  <a href="#aba12624858d3e17d6702d0e4061d9e65">More...</a><br /></td></tr>
<tr class="separator:aba12624858d3e17d6702d0e4061d9e65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f6a7a7e9163c44035d7a58d1f3dcc2d"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#a2f6a7a7e9163c44035d7a58d1f3dcc2d">~BackendWrapper</a> ()</td></tr>
<tr class="memdesc:a2f6a7a7e9163c44035d7a58d1f3dcc2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor to make polymorphism.  <a href="#a2f6a7a7e9163c44035d7a58d1f3dcc2d">More...</a><br /></td></tr>
<tr class="separator:a2f6a7a7e9163c44035d7a58d1f3dcc2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06535a9363a71053aba8e328a75a6612"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#a06535a9363a71053aba8e328a75a6612">copyToHost</a> ()=0</td></tr>
<tr class="memdesc:a06535a9363a71053aba8e328a75a6612"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer data to CPU host memory.  <a href="#a06535a9363a71053aba8e328a75a6612">More...</a><br /></td></tr>
<tr class="separator:a06535a9363a71053aba8e328a75a6612"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c5604039feba47dd6d93e50a1ec130c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#a4c5604039feba47dd6d93e50a1ec130c">setHostDirty</a> ()=0</td></tr>
<tr class="memdesc:a4c5604039feba47dd6d93e50a1ec130c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indicate that an actual data is on CPU.  <a href="#a4c5604039feba47dd6d93e50a1ec130c">More...</a><br /></td></tr>
<tr class="separator:a4c5604039feba47dd6d93e50a1ec130c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a93c4757ba0f720e8133d2f14ee8425f5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#a93c4757ba0f720e8133d2f14ee8425f5">backendId</a></td></tr>
<tr class="memdesc:a93c4757ba0f720e8133d2f14ee8425f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Backend identifier.  <a href="#a93c4757ba0f720e8133d2f14ee8425f5">More...</a><br /></td></tr>
<tr class="separator:a93c4757ba0f720e8133d2f14ee8425f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af874ec283d3710ba56945a063fddd197"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html#af874ec283d3710ba56945a063fddd197">targetId</a></td></tr>
<tr class="memdesc:af874ec283d3710ba56945a063fddd197"><td class="mdescLeft">&#160;</td><td class="mdescRight">Target identifier.  <a href="#af874ec283d3710ba56945a063fddd197">More...</a><br /></td></tr>
<tr class="separator:af874ec283d3710ba56945a063fddd197"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Derivatives of this class wraps <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a> for different backends and targets. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a523b1266b28c68bf80153fe1cce064fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a523b1266b28c68bf80153fe1cce064fc">&#9670;&nbsp;</a></span>BackendWrapper() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cv::dnn::BackendWrapper::BackendWrapper </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>backendId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>targetId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a4f78e2ddc8f0aeadfc1ae173cc279e3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f78e2ddc8f0aeadfc1ae173cc279e3e">&#9670;&nbsp;</a></span>BackendWrapper() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cv::dnn::BackendWrapper::BackendWrapper </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>targetId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">cv::Mat</a> &amp;&#160;</td>
          <td class="paramname"><em>m</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Wrap <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a> for specific backend and target. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">targetId</td><td>Target identifier. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">m</td><td><a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a> for wrapping.</td></tr>
  </table>
  </dd>
</dl>
<p>Make CPU-&gt;GPU data transfer if it's require for the target. </p>

</div>
</div>
<a id="aba12624858d3e17d6702d0e4061d9e65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba12624858d3e17d6702d0e4061d9e65">&#9670;&nbsp;</a></span>BackendWrapper() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cv::dnn::BackendWrapper::BackendWrapper </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../df/d7b/classcv_1_1dnn_1_1BackendWrapper.html">BackendWrapper</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../d6/d0f/group__dnn.html#ga8a9ab61770c140f0fa2880c90aeae832">MatShape</a> &amp;&#160;</td>
          <td class="paramname"><em>shape</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Make wrapper for reused <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>Wrapper of <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a> that will be reused. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">shape</td><td>Specific shape.</td></tr>
  </table>
  </dd>
</dl>
<p>Initialize wrapper from another one. It'll wrap the same host CPU memory and mustn't allocate memory on device(i.e. GPU). It might has different shape. Use in case of CPU memory reusing for reuse associated memory on device too. </p>

</div>
</div>
<a id="a2f6a7a7e9163c44035d7a58d1f3dcc2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f6a7a7e9163c44035d7a58d1f3dcc2d">&#9670;&nbsp;</a></span>~BackendWrapper()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual cv::dnn::BackendWrapper::~BackendWrapper </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Virtual destructor to make polymorphism. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a06535a9363a71053aba8e328a75a6612"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06535a9363a71053aba8e328a75a6612">&#9670;&nbsp;</a></span>copyToHost()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::dnn::BackendWrapper::copyToHost </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Transfer data to CPU host memory. </p>

</div>
</div>
<a id="a4c5604039feba47dd6d93e50a1ec130c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c5604039feba47dd6d93e50a1ec130c">&#9670;&nbsp;</a></span>setHostDirty()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cv::dnn::BackendWrapper::setHostDirty </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Indicate that an actual data is on CPU. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a93c4757ba0f720e8133d2f14ee8425f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93c4757ba0f720e8133d2f14ee8425f5">&#9670;&nbsp;</a></span>backendId</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cv::dnn::BackendWrapper::backendId</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Backend identifier. </p>

</div>
</div>
<a id="af874ec283d3710ba56945a063fddd197"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af874ec283d3710ba56945a063fddd197">&#9670;&nbsp;</a></span>targetId</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cv::dnn::BackendWrapper::targetId</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Target identifier. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>opencv2/dnn/<a class="el" href="../../db/ddc/dnn_2dnn_8hpp.html">dnn.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:47 for OpenCV by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
